//package com.sishu.websocket4.common;
//
//import cn.dev33.satoken.exception.NotLoginException;
//import cn.dev33.satoken.stp.StpUtil;
//import org.springframework.http.HttpStatus;
//import org.springframework.http.server.ServerHttpRequest;
//import org.springframework.http.server.ServerHttpResponse;
//import org.springframework.http.server.ServletServerHttpRequest;
//import org.springframework.web.socket.WebSocketHandler;
//import org.springframework.web.socket.server.HandshakeInterceptor;
//
//import java.util.Map;
//
//public class TokenHandshakeInterceptor implements HandshakeInterceptor {
//
//    @Override
//    public boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, Map<String, Object> attributes) throws Exception {
//        //return StpUtil.isLogin();
//        if (request instanceof ServletServerHttpRequest) {
//
//            ServletServerHttpRequest servletRequest = (ServletServerHttpRequest) request;
//            servletRequest.getHeaders().forEach((key, values) -> {
//                System.out.println(key + ": " + String.join(", ", values));
//            });
//            String token = servletRequest.getHeaders().getFirst("satoken");
//            System.out.println("Received token: " + token); // 打印 token
//            try {
//                // 检查 token 是否有效
//                StpUtil.checkLogin();
//                return true;
//            } catch (NotLoginException e) {
//                // token 无效，拒绝连接
//                System.out.println("握手前失败");
//                response.setStatusCode(HttpStatus.UNAUTHORIZED);
//                return false;
//            }
//        }
//        return true;
//    }
//
//    @Override
//    public void afterHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, Exception exception) {
//        // 连接建立后处理
//    }
//}
